import java.util.Arrays;

public class Practice {
    //1.创建一个 int 类型的数组, 元素个数为 100, 并把每个元素依次设置为 1 - 100
    public static void main1(String[] args) {
        int[] arr=new int[100];
        for (int i = 0; i <100 ; i++) {
            arr[i]=i+1;
        }
        System.out.print(Arrays.toString(arr));
    }

    //2.实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 , 并设置到对应的数组元素上.
    // 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}
    public static void transform(int[] arr) {
        for (int i = 0; i <arr.length ; i++) {
            arr[i]*=2;
        }
    }
    public static void main2(String[] args) {
        int[] arr=new int[]{1,2,3,4,5};
        transform(arr);
        System.out.print(Arrays.toString(arr));
    }

    //3.实现一个方法 sum, 以数组为参数, 求数组所有元素之和.
    public static int sum(int[] arr) {
        int tmp=0;
        for (int i = 0; i <arr.length ; i++) {
            tmp+=arr[i];
            if(i!=arr.length){
                System.out.print(arr[i]+"+");
            }
        }
        System.out.print("=");
        return tmp;
    }
    public static void main3(String[] args) {
        int[] arr=new int[]{1,2,3,4,5};
        System.out.println(sum(arr));
    }

    //4.调整数组顺序使得奇数位于偶数之前。调整之后，不关心大小顺序。
    //如数组：[1,2,3,4,5,6]调整后可能是：[1, 5, 3, 4, 2, 6]
    public static void main4(String[] args) {
        int[] arr=new int[]{1,2,3,4,5};
        int[] arr1=new int[arr.length];//存奇数
        int[] arr2=new int[arr.length];//存偶数
        int k=0;
        int m=0;
        for (int i = 0; i <arr.length ; i++) {
         if(arr[i]%2==0){
             arr2[m]=arr[i];//存偶数
             m++;
         }
         else{
             arr1[k]=arr[i];//存奇数
             k++;
         }
        }
        for (int i = 0; i <arr.length ; i++) {
            if(k>0){
                arr[i]=arr1[k-1];
                k--;
            }
            else{
                arr[i]=arr2[m-1];
                m--;
            }
        }
        System.out.print(Arrays.toString(arr));
    }

    //5.给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target 的那 两个 整数，并返回它们的数组下标。
    public static void main5(String[] args) {
        int[] nums=new int[]{1,90,3,4,100,66,32};
        int target=33;
        for (int i = 0; i <nums.length-1 ; i++) {
            for (int j = i+1; j <nums.length ; j++) {
                if((target-nums[i])==nums[j]){
                    System.out.println("["+i+","+j+"]");
                    i=nums.length;
                }
            }
        }
    }

    //6.给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。
    public static void main6(String[] args) {
        int[] arr={1,3,6,4,3,1,4,};
        int tmp=0;
        int n=0;
        for (int i = 0; i <arr.length ; i++) {
            tmp=arr[i];
            for (int j = 0; j <arr.length ; j++) {
                if(tmp==arr[j]){
                    n++;
                }
            }
            if(n==1){
                System.out.println("输入："+Arrays.toString(arr));
                System.out.println("输出："+arr[i]);
                break;
            }
            n=0;
        }
    }

    //7.给定一个大小为 n 的数组，找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
    //你可以假设数组是非空的，并且给定的数组总是存在多数元素。
    //数组中出现次数超过一半的数字，一定是排好序之后，中间位置的数字
    //排序法:将数组排序后，数组n/2的元素一定是众数
    /*public int majorityElement(int[] nums) {
        Arrays.sort(nums);
        return nums[nums.length/2];
    }*/
    public static void main7(String[] args) {
        int[] arr={1,2,3,3,6,6,6,6,6,6,6,6,6,6,6,6,6,6666,3,3};
        int tmp=0;
        int k=0;
        for (int i = 0; i <arr.length ; i++) {
            tmp=arr[i];
            for (int j = 0; j <arr.length ; j++) {
                    if(tmp==arr[j]){
                        k++;
                    }
            }
            if(k>(arr.length/2)){
                System.out.println("输入："+Arrays.toString(arr));
                System.out.println("输出："+tmp);
                break;
            }
            k=0;
        }
    }

    //8.给你一个整数数组 arr，请你判断数组中是否存在连续三个元素都是奇数的情况：如果存在，请返回 true ；否则，返回 false
    public static void main(String[] args) {
        int[] arr={11,2,34,3,4,15,17,213,12};
        System.out.println("输入："+Arrays.toString(arr));
        int n=0;
        for (int i = 0; i <arr.length-2 ; i++) {
            if((arr[i]%2==1)&&(arr[i+1]%2==1)&&(arr[i+2]%2==1)){
                System.out.println("输出：true");
                System.out.println("解释：存在连续三个元素都是奇数的情况，即 ["+arr[i]+","+arr[i+1]+","+arr[i+2]+"]");
                n++;
            }
        }
        if(n==0){
            System.out.println("输出：false");
            System.out.println("解释：不存在连续三个元素都是奇数的情况");
        }
    }
}
